A checksum is an error-detection scheme for inter-computer communications in which a transmitted message between two computers over a network includes by a numerical value within the message that is based on the total number of bits in the message. A component of the receiving computer determines the total number of bits in the received message and compares the determined number to the numerical value in the message to validate that the message is the same as when transmitted. If a discrepancy is detected, the receiving computer flags the message as having a transmission error.
In Transmission Control Protocol/Internet Protocol (TCP/IP)—a communication protocol commonly used by computers that communicate over a network—the checksum scheme is often used to verify that communications are properly transmitted and received.
FIG. 1 is a bock diagram of a conventional TCP/IP packet 100 that is well known in the art. In the TCP/IP packet 100, there are a number of fields that contain data, information about the source and destination of the data, and data about the Packet. One such latter-type field is a checksum field 110, which is typically 16 bits in length and is used by a transmitting computer and a receiving computer to determine the validity the TCP/IP packet 100 as described above.
FIG. 2 is a block diagram of a conventional computer system 200 that uses the checksum scheme to determine the validity of transmitted TCP/IP packets 100. In the system 200, a receiving computer 210 is coupled to a computer network 215. The computer network 215 is typically coupled to one or more computers (not shown) other than the receiving computer 210, one of which is a transmitting computer (also not shown) for this example. The transmitting computer and the receiving computer 210 communicate via the network 215 by transmitting and receiving TCP/IP packets and use a checksum scheme to detect transmission errors and maintain valid communications.
The receiving computer 210 includes a network interface adapter 230 that facilitates communications between the receiving computer 210 and the computer network 215. The network interface adapter 230 includes a Media Access Control (MAC) chip 231 that performs communication facilitation operations as defined by a MAC driver that resides in memory (not shown) of the receiving computer 210. The network interface adapter 230 is coupled to a bus 220 (typically a PCI bus) which is, in turn, coupled to a central processing unit (CPU) 221 and a memory 222. The memory 222 includes a TCP/IP stack 223, which is part of a well-known scheme for handling TCP/IP packets once received from the computer network 215.
As TCP/IP packets are received from the network 215, the MAC chip 231 conventionally manipulates each TCP/IP packet to be suitable for transmission on the bus 220. Then, each TCP/IP packet is stored on the TCP/IP stack to await data retrieval as facilitated by the CPU 221.
During the data-retrieval process from the TCP/IP stack 223, a checksum operation is typically performed on each header portion (TCP and IP header which includes all the fields in a typical TCP/IP packet except the data field) of the TCP/IP packet to ensure that each TCP/IP packet is valid. The checksum operation is executed by the CPU 221 of the receiving computer 210. If a TCP/IP packet is determined to be valid, the pertinent data within the TCP/IP packet is retrieved and directed appropriately. If a TCP/IP packet is determined to be invalid, it is discarded. Thus, invalid TCP/IP packets that do not pass the checksum are a waste of valuable CPU computing power and time.
One solution for alleviating this inefficiency has been to “offload” the TCP/IP checksum operation to the MAC chip 231. Thus, as TCP/IP packets are received, the MAC chip 231 performs the checksum operation on each portion of the TCP/IP packet to determine if the TCP/IP packet is valid or not. If valid, the TCP/IP packet is passed along to the TCP/IP stack 223 via the bus 220, and the CPU 221 retrieves the pertinent data inside the TCP/IP packet and uses the data accordingly. If the TCP/IP packet is not valid, the MAC chip 231 discards it and does not pass it along to the TCP/IP stack 223. In this manner, only valid TCP/IP packets are sent to the TCP/IP stack 223 for data retrieval and the receiving computer 210 does not waste valuable computing power and time by performing the checksum operation on invalid packets.
When the checksum operation is offloaded to the MAC chip 231, the MAC chip is allowed to discard the invalid TCP/IP packets when determined to be invalid as discussed above. For this purpose, the MAC chip 231 must be able to communicate with the CPU 221 in order for the CPU to execute the discarding of the invalid packet. Typically, this communication is handled through an application program interface (API) 232. In smaller systems, however, memory space and connections to and from the CPU 221 are limited and adding an API 232 is problematic. Thus, if the MAC chip 231 cannot discard the invalid TCP/IP packets because an API 232 is not feasible, then the CPU 221 must perform the checksum operation again from the TCP/IP stack 223 and the improvement to efficiency is lost.